const express = require('express');
// 注册路由器
const router = express.Router();
const BookModel = require('../models/BookModel')

// 注册图书列表路由（把数据库的数据渲染到页面）
router.get('/list',(req,res)=>{
    BookModel.find((error,data)=>{
        if (error) {
        // 如果失败，就返回错误页面
            res.render('book/list',{errorMsg:'获取图片列表失败'})
        } else {
        // 如果成功了, 返回图书列表页面
            res.render('book/list',{books:data})
        }
    })
})

// 进入修改界面路由
router.get('/toUpdate/:id',(req,res)=>{
    // 获取id参数
    const {id} = req.params;
    // 根据id查询得到对应的book对象（集合）
    BookModel.findById(id,(error,data)=>{
        if (error) {
        // 如果失败，就返回错误页面
            res.render('book/error',{errorMsg:'获取图书失败'})
        } else {
        // 如果成功了, 返回图书列表页面
            res.render('book/addOrUpdate',{books:data})
        }
    })
})

// 进入添加界面路由
router.get('/toAdd',(req,res)=>{
    // 挑转addOrUpdate图形化界面
    const book = {
        name: '',
        author: '',
        price: 0
    }
    // 如果成功了, 返回图书列表页面
    res.render('book/addOrUpdate',{books:book})
    
})

/* 
添加的路由
- 读取请求参数: book对象(没有_id)
- 添加到数据库
- 重定向: /book/list
*/
router.post('/add',(req,res)=>{
     // 读取请求参数: book对象(不包含_id)
    const book = req.body;
    // 添加到数据库
    BookModel.create(book,(error,data)=>{
        if (error) {
        // 如果失败，就返回错误页面
            res.render('book/error',{errorMsg:'添加图书失败'})
        } else {
        // 如果成功了,就重定向：/book/list (类似于重新渲染)
            res.redirect('/book/list')
        }
    })
})

/* 
修改的路由
- 读取请求参数: book对象(包含_id)
- 修改数据库
- 重定向: /book/list
*/

router.post('/Update',(req,res)=>{
     // 读取请求参数: book对象(包含_id)
    const book = req.body;
    // 添加到数据库
    BookModel.updateOne({_id:book._id},book,(error,data)=>{
        if (error) {
        // 如果失败，就返回错误页面
            res.render('book/error',{errorMsg:'修改图书失败'})
        } else {
        // 如果成功了,就重定向：/book/list (类似于重新渲染)
            res.redirect('/book/list')
        }
    })
})

/* 
删除的路由
- 读取请求参数: id
- 删除对应的文档
- 重定向: /book/list
*/
router.get('/remove/:id',(req,res)=>{
    // 读取请求参数: book对象(包含_id)
   const {id} = req.params;
   // 删除对应的文档
   BookModel.deleteOne({_id:id},(error,data)=>{
       if (error) {
       // 如果失败，就返回错误页面
           res.render('book/error',{errorMsg:'删除图书失败'})
       } else {
       // 如果成功了,就重定向：/book/list (类似于重新渲染)
           res.redirect('/book/list')
       }
   })
})
// 暴露路由器
module.exports = router;